/**
 * 
 */
package cl.blueprintsit.teaching.inheritance;

/**
 * This interface is responsible for defining a Point behavior.
 * 
 * @author andres
 *
 */
public interface IPoint {

	/**
	 * This method is responsible for determining whether <code>this</code>
	 * object is located at the origin or not.
	 * 
	 * @return <code>true> if <code>this</code> object is located at the origin
	 *         and <code>false</code> otherwise.
	 */
	public boolean isOrigin();

	/**
	 * This method is responsible to move this <code>Point</code> to the point
	 * received as argument.
	 */
	public void move(IPoint point);

	/**
	 * This method is responsible to calculate the distance from
	 * <code>this</code> <code>Point</code> to another <code>Point</code>.
	 */
	public int getDistanceFromAnotherPoint(IPoint point);

	/**
	 * This method is responsible for calculate the abscissa cartesian position
	 * of this point.
	 * 
	 * @return The abscissa value of the position of this point.
	 */
	public double getCartesianX();

	/**
	 * This method is responsible for calculate the orderer position
	 * of this point.
	 * 
	 * @return The orderer value of the position of this point.
	 */
	public double getCartesianY();

	/*
	 * Implementar: mover el punto a otro punto distancia entre este punto y
	 * otro punto.
	 */

}
